package com.gitee.neuray.security.par.scoreManage.biz;

import com.gitee.neuray.security.common.msg.TableResultResponse;
import com.gitee.neuray.security.common.util.EntityUtils;
import com.gitee.neuray.security.common.util.Query;
import com.gitee.neuray.security.common.util.UUIDUtils;
import com.gitee.neuray.security.par.scoreManage.entity.*;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

import org.springframework.transaction.annotation.Transactional;
import com.gitee.neuray.security.common.biz.BaseBiz;

import com.gitee.neuray.security.par.scoreManage.mapper.ParExamInfoMapper;


@Service
@Transactional(rollbackFor = Exception.class)
public class ParExamInfoBiz extends BaseBiz<ParExamInfoMapper,ParExamInfoEntity> {
    @Override
    protected String getPageName() {
        return "ParExamInfo"+"Biz";
    }

    @Autowired
    private ParExamInfoMapper parExamInfoMapper;

    /**
     * 分页获取信息
     * @param query
     * @return
     */
    public TableResultResponse page(Query query){
        Page<Object> result = PageHelper.startPage(query.getPageNo(), query.getPageSize());
        List<ParExamInfoVO> list = parExamInfoMapper.page(query);
        return new TableResultResponse(result.getPageSize(),result.getPageNum(),result.getPages(),result.getTotal(),list);
    }

    /**
     * 获取全部组织机构
     * */
    public List<Map> getAllOrg(){
        return parExamInfoMapper.getAllOrg();
    }

    public void add(ParExamInfoEntity parExamInfoEntity){
        EntityUtils.setCreatAndUpdatInfo(parExamInfoEntity);
        // 新增主表
        parExamInfoMapper.insertSelective(parExamInfoEntity);
        // 根据计划id 查询item表数据并新增
        List<ParExamItemVO> itemList = parExamInfoMapper.getItemByPlan(parExamInfoEntity.getKpjhbid());
        // 循环新增
        for(ParExamItemVO parExamItemVO :itemList){
            EntityUtils.setCreatAndUpdatInfo(parExamItemVO);
            parExamItemVO.setId(UUIDUtils.generateShortUuid());
            parExamItemVO.setKpbid(parExamInfoEntity.getId());
            parExamInfoMapper.addItem(parExamItemVO);
        }
    }


    /**
     * 工作分页获取信息
     * @param query
     * @return
     */
    public TableResultResponse getWorkInfo(Query query){
        Page<Object> result = PageHelper.startPage(query.getPageNo(), query.getPageSize());
        List<ParWorkInfoEntity> list = parExamInfoMapper.getWorkInfo(query);
        return new TableResultResponse(result.getPageSize(),result.getPageNum(),result.getPages(),result.getTotal(),list);
    }

    /**
     * 考评列表获取信息
     * @param query
     * @return
     */
    public TableResultResponse getCate(Query query){
        Page<Object> result = PageHelper.startPage(query.getPageNo(), query.getPageSize());
        List<ParExamCateVO> list = parExamInfoMapper.getCate(query);
        Map<String,Object> param = new HashMap<>();
        // 记差错
        if("2".equals(query.get("kpnrlx")) || "3".equals(query.get("kpnrlx"))){
            for(ParExamCateVO parExamCateVO:list){
                param.put("kpbid",query.get("kpbid"));
                param.put("kpxmflid",parExamCateVO.getId());
                List<ParExamItemVO> chiildren = parExamInfoMapper.getItem(param);
                parExamCateVO.setKpxmNames(chiildren.stream().map(item -> item.getKpxName()).collect(Collectors.joining(", ")));
                parExamCateVO.setItemList(chiildren);
            }
        }else{
            for(ParExamCateVO parExamCateVO:list){
                param.put("kpbid",query.get("kpbid"));
                param.put("kpxmflid",parExamCateVO.getId());
                List<ParExamItemVO> chiildren = parExamInfoMapper.getItem(param);
                parExamCateVO.setItemList(chiildren);
            }
        }
        return new TableResultResponse(result.getPageSize(),result.getPageNum(),result.getPages(),result.getTotal(),list);
    }

    /**
     * 新增项目评分信息
     * */
    public void addScore(List<ParExamScoreEntity> list){
        if(list != null && list.size() > 0){
            // 先删除再新增
            parExamInfoMapper.delScore(list.get(0).getKpxmbid());
            for(ParExamScoreEntity parExamScoreEntity : list){
                if(parExamScoreEntity.getPf() != null){
                    EntityUtils.setCreatAndUpdatInfo(parExamScoreEntity);
                    parExamScoreEntity.setId(UUIDUtils.generateShortUuid());
                    parExamInfoMapper.addScore(parExamScoreEntity);
                }

            }
        }
    }

    /**
     * 获取项目评分列表
     * */
    public List<ParExamScoreEntity> getScore(Map<String,Object> param){
        return parExamInfoMapper.getScore(param);
    }

    /**
     * 个人分页获取信息
     * @param query
     * @return
     */
    public TableResultResponse personPage(Query query){
        Page<Object> result = PageHelper.startPage(query.getPageNo(), query.getPageSize());
        List<ParExamInfoVO> list = parExamInfoMapper.personPage(query);
        return new TableResultResponse(result.getPageSize(),result.getPageNum(),result.getPages(),result.getTotal(),list);
    }

    public List<Map> getUserByOrgCode(String orgCode){
        return parExamInfoMapper.getUserByOrgCode(orgCode);
    }
}
